Aller au contenu

Auto-éditer un wikilivre/Auto-référencer/télécharger.sh

Un livre de Wikilivres.
#! /bin/bash
# Fichier : télécharger.sh
VERSION=200623
#P Nom du fichier de commandes : télécharger
#P Syntaxe : "télécharger <Page wikimedia>"
#P Exemple : "./télécharger LivreTest" à la console.
#P Date de création : 28 mars 2020
#P Modifié le : 26 avril 2020 par GC
#P Modifié le : 30 mai 2020 par GC pour l'installation automatique.
#P Version de la documentation sur WikiLivres le : 26 avril 2020
#P
#P LES FICHIERS DE COMMANDES 
#P## header.sh ##############
#P header.sh, a créé le répertoire des commandes si celui-ci ne préexistait pas
#P   il a vérifié la validité ou invalidé de ligne de commande, initialisé
#P   les variables $Projet, $Site, $SitePrefix, vérifié l'existence des
#P   fichiers de liste "$Projet/$1".list et "$Projet/$1".prj, puis affiché le
#P   contenu du répertoire de travail.
#P## lister #################
#P lister a créé le fichier de liste $Projet/$1.list par l'extraction du fichie
#P   fichier $Projet/$1.contenu, copie de la page "Contenus" de la version
#P   imprimable du livre, ou du fichier $Projet/$1.compilé issu d'une
#P   compilation destinée à la publication par PediaPress.
#P   il crée aussi le fichier $Projet/$1.prj qui conserve l'ordre d'affichage
#P de la publication.


#D La commande ./télécharger <wikilivre> télécharge la page complète d'une
#D   "page" ou d'un "livre" de wikilivre. Elle crée les répertoires de travail
#D   avec la même hiérarchie que dans la page originale du livre, ou de sa
#D   version imprimable, ou de sa page de compilation.
#D
#D On procède par le téléchargement complet de la page et des sous-pages du
#D   livre. Viennent ensuite la création des répertoires de travail des pages
#D   qui composent le livre, puis on copie des pages html dans ces répertoires.

#D   Pendant tout ce processus des lichiers temporaires de liste sont créés en
#D   local:
#D   $Projet/$1.locale.list qui est une image locale de la structure du livre.
#D   $Projet/$1.mainPage. lien local vers l' "Article maître du livre"
#D   $Projet/$1.dirs : liste des sous-pages de l'article principal du livre.


source header.inc

#O## télécharger ############
if [ $0=télécharger ]; then echo "télécharger : Version "$VERSION; fi

#O télécharger dans le répertoire de travail, la structure complète du livre.
    cd $Projet
    echo "télécharger tous des répertoires du livre '$1'"
    wget -r -linf -k -p -E  -i $1.list -o wget-log-télécharger.txt
    echo "----------"

#O Déplacer les pages html dans des sous-répertoires de travail pour documenter les pages et sous pages
#O   créer une liste locale vers les répertoires téléchargés $Projet/$1.locale.list
      echo "créer la hirarchie complète concaténées des répertoires du livre '$1'"
      cat $Projet/$1.list | sed "s/https:\/\///g" | sed "s/\ /\\\ /g" | tr '\n' ',' > $Projet/$1.locale.list
      echo "   Liste locale concaténée $Projet/$1.locale.list :"
      echo ""
      cat $Projet/$1.locale.list
      echo "----------"
      
#O Copier les fichiers html dans les répertoires respectifs.
#O   créer un fichier avec le nom de la page $Projet/$1.mainPage.
      echo "créer la page du lien local vers la page principale, 'le livre'."
      cat $Projet/$1.locale.list | sed "s/ /\\ /g" | cut -d ',' -f1 > $Projet/$1.mainPage
      echo "----------"

#O   initialiser la variable $mainPage
      read mainPage < $Projet/$1.mainPage
      echo "variable mainPage = $mainPage"     
    #T cat $Projet/$1.mainPage | awk -F"/" '{print NF}' > nbchamps
    #T read NbChamps < nbchamps
    #T echo "Variable NbChamps = $NbChamps"
      echo "----------"
      
#O   créer un fichier des répertoires de travail à créer. 
      ls "$mainPage" | sed "s/.html//g"  > $Projet/$1.dirs
      echo "sous-répertoires de travail : "
      cat  $Projet/$1.dirs
      echo "----------" 

#O   copier les pages et sous pages html dans les répertoires respectifs.
      while read line
      do
        echo "$line".html | sed "s/https:\/\///g" | tr '\n' ' ' > source
        read Source < source
        echo "Source = $Source"

        echo "$line" | awk -F"/" '{ print $NF }'| tr '\n' '/' > destination 
        read dir < destination
        mkdir $dir
        echo "$line".html | awk -F"/" '{ print $NF }' >> destination
        read Destination < destination
        echo "Destination = $Destination"
        echo "Copier : cp ./$Source $Destination"
        cp -f "./$Source" "$Destination"
      done < $Projet/$1.list
      rm source ; rm destination

#O quitter le programme d'essai et passer à la création de la page "Annexe" des articles.
echo "----------"
# echo -en "\033[31mRetour-chariot une pour créer l'Annexe des articles, Ctrl-C pour quitter.\033[0m "
# read -p ">"
# "\033[31mRetour-chariot une pour créer l'Annexe, Ctrl-C pour quitter >"
exit 0
# Fin télécharger.sh